package com.imooc.trading_system.service;

import com.imooc.trading_system.model.OrderBaseDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.imooc.trading_system.utils.JsonData;
import com.imooc.trading_system.vo.order.*;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author Feng zhaoxi
 * @since 2022-04-28
 */
public interface OrderBaseService {
    /**
     * 创建订单
     *
     * @param createOrderReqVO
     * @return
     */
    JsonData createOrder(CreateOrderReqVO createOrderReqVO);

    /**
     * 获取我的订单
     *
     * @param getMyOrderReqVO
     * @return
     */
    JsonData getMyOrder(GetMyOrderReqVO getMyOrderReqVO);

    /**
     * 支付订单
     *
     * @param payReqVO
     * @return
     */
    JsonData toPay(PayReqVO payReqVO);

    /**
     * 确认收货
     *
     * @param confirmReqVO
     * @return
     */
    JsonData confirm(ConfirmReqVO confirmReqVO);

    /**
     * 买家给卖家评价
     *
     * @param evaluationReqVO
     * @return
     */
    JsonData evaluation(EvaluationReqVO evaluationReqVO);

    /**
     * 卖家发货
     *
     * @param deliverGoodsReqVO
     * @return
     */
    JsonData deliverGoods(DeliverGoodsReqVO deliverGoodsReqVO);

    /**
     * 更新状态为运输中
     *
     * @param orderNo
     */
    void inTransit(String orderNo);

    /**
     * 更新状态为已送达
     *
     * @param orderNo
     */
    void haveArrived(String orderNo);

    /**
     * 更新状态为待确认
     *
     * @param orderNo
     */
    void buyerConfirm(String orderNo);

    /**
     * 获取订单状态的个数，包括待付款、待发货、待确认、待评价
     *
     * @return
     */
    JsonData getOrderStatusCount();
}
